/**
 * Odontosis - (2008 - Eclipse 3.3 - JDK1.6 Update 3) 
 */
package com.odontosis.entidade;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;

import com.odontosis.util.StringUtilsOdontosis;


/**
 * Paciente do sistema Odontosis.
 * @author Oto
 * ltima modificao: $Author$<br>
 * Verso: $Revision$ $Date$
 * 
 */
@Entity
@Table(name = "paciente")
public class Paciente extends OdontosisBusinessObject {
	private static final long serialVersionUID = 1619401828035853565L;
	
	
	@Length(max=70)
	@Column(name = "indicacao")
	private String indicacao;

	@Column(name = "data_cadastro")
	@Temporal(TemporalType.TIMESTAMP)
	private Date dataCadastro;
	
	/*dados residenciais*/
	@Column(name = "rua_residencial")
	private String ruaResidencial;
	
	@Column(name = "num_residencial")
	private String numResidencial;
	
	@Column(name = "ap_residencial", length = 40)
	private String apResidencial;
	
	@Column(name = "bairro_residencial")
	private String bairroResidencial;
	
	@Column(name = "cidade_residencial")
	private String cidadeResidencial;
	
	@Column(name = "uf_residencial")
	private String ufResidencial;
	
	@Column(name = "fone_residencial")
	private String foneResidencial;
	
	@Column(name = "cel_residencial")
	private String celResidencial;
	
	@Column(name = "cep_residencial")
	private String cepResidencial;
	
	/*dados comerciais*/
	@Column(name = "rua_comercial")
	private String ruaComercial;
	
	@Column(name = "num_comercial")
	private String numComercial;
	
	@Column(name = "ap_comercial", length = 40)
	private String apComercial;
	
	@Column(name = "bairro_comercial")
	private String bairroComercial;
	
	@Column(name = "cidade_comercial")
	private String cidadeComercial;
	
	@Column(name = "fone_comercial")
	private String foneComercial;
	
	@Column(name = "cep_comercial")
	private String cepComercial;
	
	@Column(name = "uf_comercial")
	private String ufComercial;
	
	@Enumerated(EnumType.STRING)
	private Sexo sexo; 
	
	@Column(name = "data_nascimento")
	@Temporal(TemporalType.TIMESTAMP)
	private Date dataNascimento;
	
	@NotEmpty
	@Length(min=3,max=50)
	@Column(name = "nome")
	private String nome;
	
	@Column(name = "numeropasta")
	private String numeroPasta;
	
	@Column(name = "ipsm")
	private String ipsm;
	
	@Column(name = "nomepai")
	private String nomepai;
	
	@Column(name = "nomemae")
	private String nomemae;
	
	@Column(name = "email")
	private String email;
	
	@Enumerated(EnumType.STRING)
	private EstadoCivil estadocivil;
	
	@Column(name = "virnorelatorio")
	private boolean virNoRelatorio; //campo para definir se os pacientes da policia virão ou não no relatorio
	
	@Column(name = "matricula")
	private String matricula;

	public String getIndicacao() {
		return indicacao;
	}

	public Date getDataCadastro() {
		return dataCadastro;
	}

	public String getRuaResidencial() {
		return ruaResidencial;
	}

	public String getNumResidencial() {
		return numResidencial;
	}

	public boolean isVirNoRelatorio() {
		return virNoRelatorio;
	}

	public void setVirNoRelatorio(boolean virNoRelatorio) {
		this.virNoRelatorio = virNoRelatorio;
	}

	public String getApResidencial() {
		return apResidencial;
	}

	public String getBairroResidencial() {
		return bairroResidencial;
	}

	public String getCidadeResidencial() {
		return cidadeResidencial;
	}

	public String getUfResidencial() {
		return ufResidencial;
	}

	public String getFoneResidencial() {
		return foneResidencial;
	}

	public String getCelResidencial() {
		return celResidencial;
	}

	public String getCepResidencial() {
		return cepResidencial;
	}

	public String getRuaComercial() {
		return ruaComercial;
	}

	public String getNumComercial() {
		return numComercial;
	}

	public String getApComercial() {
		return apComercial;
	}

	public String getBairroComercial() {
		return bairroComercial;
	}

	public String getCidadeComercial() {
		return cidadeComercial;
	}

	public String getFoneComercial() {
		return foneComercial;
	}

	public String getCepComercial() {
		return cepComercial;
	}

	public String getUfComercial() {
		return ufComercial;
	}

	public Sexo getSexo() {
		return sexo;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public String getNome() {
		return nome;
	}

	public String getNumeroPasta() {
		return numeroPasta;
	}

	public String getIpsm() {
		return ipsm;
	}

	public void setIndicacao(String indicacao) {
		this.indicacao = indicacao;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public void setRuaResidencial(String ruaResidencial) {
		this.ruaResidencial = ruaResidencial;
	}

	public void setNumResidencial(String numResidencial) {
		this.numResidencial = numResidencial;
	}

	public void setApResidencial(String apResidencial) {
		this.apResidencial = apResidencial;
	}

	public void setBairroResidencial(String bairroResidencial) {
		this.bairroResidencial = bairroResidencial;
	}

	public void setCidadeResidencial(String cidadeResidencial) {
		this.cidadeResidencial = cidadeResidencial;
	}

	public void setUfResidencial(String ufResidencial) {
		this.ufResidencial = ufResidencial;
	}

	public void setFoneResidencial(String foneResidencial) {
		this.foneResidencial = foneResidencial;
	}

	public void setCelResidencial(String celResidencial) {
		this.celResidencial = celResidencial;
	}

	public void setCepResidencial(String cepResidencial) {
		this.cepResidencial = cepResidencial;
	}

	public void setRuaComercial(String ruaComercial) {
		this.ruaComercial = ruaComercial;
	}

	public void setNumComercial(String numComercial) {
		this.numComercial = numComercial;
	}

	public void setApComercial(String apComercial) {
		this.apComercial = apComercial;
	}

	public void setBairroComercial(String bairroComercial) {
		this.bairroComercial = bairroComercial;
	}

	public void setCidadeComercial(String cidadeComercial) {
		this.cidadeComercial = cidadeComercial;
	}

	public void setFoneComercial(String foneComercial) {
		this.foneComercial = foneComercial;
	}

	public void setCepComercial(String cepComercial) {
		this.cepComercial = cepComercial;
	}

	public void setUfComercial(String ufComercial) {
		this.ufComercial = ufComercial;
	}

	public void setSexo(Sexo sexo) {
		this.sexo = sexo;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setNumeroPasta(String numeroPasta) {
		this.numeroPasta = numeroPasta;
	}

	public void setIpsm(String ipsm) {
		this.ipsm = ipsm;
	}

	public String getNomepai() {
		return nomepai;
	}

	public String getNomemae() {
		return nomemae;
	}

	public String getEmail() {
		return email;
	}

	public void setNomepai(String nomepai) {
		this.nomepai = nomepai;
	}

	public void setNomemae(String nomemae) {
		this.nomemae = nomemae;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public EstadoCivil getEstadocivil() {
		return estadocivil;
	}

	public void setEstadocivil(EstadoCivil estadocivil) {
		this.estadocivil = estadocivil;
	}
	
	@Transient
	public String getDescricaoAutoComplete(){
		String numero = "";
		if(!StringUtilsOdontosis.isVazia(getNumeroPasta())){
			numero = StringUtilsOdontosis.colocaZeros(getNumeroPasta(), 10);
			return numero + " - " +  getNome();
		}
		return getNome();
	}

	public String getMatricula() {
		return matricula;
	}

	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}
		
	
}
